import pandas as pd

# 基本读取
df = pd.read_csv('tips.csv')  # 从当前目录读取
print("基本读取-前5行数据:\n", df.head())

# 指定参数读取
df = pd.read_csv('tips.csv',
                 sep=',',          # 分隔符(默认为逗号)
                 header=0,        # 使用第一行作为列名
                 index_col=0,     # 将第一列作为索引
                 usecols=['tip', 'sex'],  # 只读取tip和sex列
                 dtype={'tip': float, 'sex': str},  # 指定列的数据类型
                 na_values=['NA', 'N/A', 'null'])  # 指定哪些值被视为NA

df = pd.read_csv("tips.csv")
print("\n指定参数读取-前5行数据:\n", df.head())

# 实际应用场景
# 场景1: 数据分析 - 读取销售数据进行分析
sales_data = pd.read_csv('tips.csv')
print("\n销售数据统计:\n", sales_data.describe())

# 场景2: 数据清洗 - 处理缺失值
df = pd.DataFrame({'A': [1, 2, None], 'B': [4, None, 6]})
print("\n原始数据:\n", df)
df_filled = df.fillna(0)  # 用0填充缺失值
print("填充后数据:\n", df_filled)

# 场景3: 数据导出 - 将处理后的数据保存为CSV
processed_data = df_filled.copy()
processed_data.to_csv('processed_sales.csv', index=False)

def process(chunk):
    print(f"Processing chunk with shape: {chunk.shape}")

# 高级读取技巧
# 分块读取大文件
chunk_size = 10
chunks = pd.read_csv('tips.csv', chunksize=chunk_size)
for chunk in chunks:
    process(chunk)  # 处理每个分块

# 指定编码读取
df = pd.read_csv('tips.csv', encoding='utf-8')  # 默认utf-8
df = pd.read_csv('tips.csv', encoding='gbk')    # 中文常用gbk编码

# 自定义列名
column_names = ['total', 'tips', 's','sm','da','t','si']
df = pd.read_csv('tips.csv', names=column_names, header=None)

print("Custom column: \n",df.head())